package com.dp.server;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.dp.client.dto.AlmacenDTO;
import com.dp.client.dto.CiudadDTO;
import com.dp.client.dto.ClienteDTO;
import com.dp.client.dto.IncidenciaDTO;
import com.dp.client.servicios.incidencia.IServiciosIncidencia;
import com.dp.server.entities.Almacen;
import com.dp.server.entities.Cliente;
import com.dp.server.entities.Incidencia;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

@SuppressWarnings("serial")
public class IServiciosIncidenciaImpl extends RemoteServiceServlet implements IServiciosIncidencia {
	static EntityManagerFactory entityManagerFactory = MantenimientoGenerico.entityManagerFactory;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Override
	public Boolean Registrar(String descripcion, String objeto, int id) {
		IncidenciaDTO incidenciaDTO = new IncidenciaDTO();
		incidenciaDTO.setDescripcion(descripcion);
		incidenciaDTO.setIdObjeto(id);
		incidenciaDTO.setObjeto(objeto);
		Incidencia incidencia = new Incidencia(incidenciaDTO);
		//EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("some_name_you_choose");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		entityManager.getTransaction().begin();
		entityManager.merge(incidencia);
		entityManager.getTransaction().commit();
		entityManager.close();
		return true;
	}
	
	@Override
	public List<IncidenciaDTO> listIncidencia() {
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		List<Incidencia> lista = entityManager.createQuery("from Incidencia order by 1 desc").getResultList();
		entityManager.close();
		ArrayList<IncidenciaDTO> result = new ArrayList<IncidenciaDTO>();
		for(Incidencia a : lista){ 
			result.add(new IncidenciaDTO(a.getId(),a.getFecha(),a.getDescripcion(),a.getObjeto(),a.getIdObjeto()));
		}
		return result;
	}

}
